package com.bjpowernode.controller;

import com.bjpowernode.result.NameValueResult;
import com.bjpowernode.result.Result;
import com.bjpowernode.result.SummaryResult;
import com.bjpowernode.service.StatisticsService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 统计分析控制器
 * 提供首页统计数据、销售漏斗统计和线索来源统计的接口
 * 负责接收前端统计相关请求并返回处理结果
 */
@RestController
public class StatisticsController {
    // 注入统计服务，用于调用业务逻辑层的统计分析方法
    @Resource
    private StatisticsService statisticsService;

    /**
     * 获取首页统计数据
     * 接口路径：/api/summary/data
     * 请求方式：GET
     * @return Result对象，包含状态码、消息和统计数据SummaryResult
     */
    @GetMapping("/api/summary/data")
    public Result getSummaryData() {
        // 调用服务层方法获取统计数据
        SummaryResult summaryResult = statisticsService.getSummaryData();
        // 返回包含统计数据的成功结果
        return Result.OK(summaryResult);
    }

    /**
     * 销售漏斗统计
     * 接口路径：/api/sale/funnel
     * 请求方式：GET
     * @return Result对象，包含状态码、消息和销售漏斗数据列表
     */
    @GetMapping("api/sale/funnel")
    public Result saleFunnel(){
        // 调用服务层方法获取销售漏斗数据
        List<NameValueResult> saleFunnel = statisticsService.getSaleFunnel();
        // 返回包含销售漏斗数据的成功结果
        return Result.OK(saleFunnel);
    }

    /**
     * 线索来源统计
     * 接口路径：/api/clue/pie
     * 请求方式：GET
     * @return Result对象，包含状态码、消息和线索来源数据列表
     */
    @GetMapping("api/clue/pie")
    public Result cluePie(){
        // 调用服务层方法获取线索来源数据
        List<NameValueResult> cluePie = statisticsService.getCluePie();
        // 返回包含线索来源数据的成功结果
        return Result.OK(cluePie);
    }
}
